An ImageAttributes object contains information about how bitmap and metafile colors are manipulated during rendering. An ImageAttributes object maintains several color-adjustment settings, including color-adjustment matrices, grayscale-adjustment matrices, gamma-correction values, color-map tables, and color-threshold values.
| Name | Description |
|---|---|
| GdipCloneImageAttributes | Makes a copy of an ImageAttributes object. |
| GdipCreateImageAttributes | Creates an ImageAttributes object. |
| GdipDisposeImageAttributes | Disposes the specified ImageAttributes object. |
| GdipGetImageAttributesAdjustedPalette | Adjusts the colors in a palette according to the adjustment settings of a specified category. |
| GdipResetImageAttributes | Adjusts the colors in a palette according to the adjustment settings of a specified category. |
| GdipSetImageAttributesCachedBackground | Sets or clears the CachedBackground member of a specified GpImageAttributes object. Microsoft Windows GDI+ does not use the CachedBackground member, so calling this function has no effect. |
| GdipSetImageAttributesColorKeys | Sets the color key (transparency range) for a specified category. |
| GdipSetImageAttributesColorMatrix | Sets the color-adjustment matrix for a specified category. |
| GdipSetImageAttributesGamma | Sets the gamma value for a specified category. |
| GdipSetImageAttributesICMMode | Sets an internal state variable to the value specified by the on parameter. |
| GdipSetImageAttributesNoOp | Turns off color adjustment for a specified category. |
| GdipSetImageAttributesOutputChannel | Sets the CMYK output channel for a specified category. |
| GdipSetImageAttributesOutputChannelColorProfile | Sets the CMYK output channel for a specified category. |
| GdipSetImageAttributesRemapTable | Sets the color-remap table for a specified category. |
| GdipSetImageAttributesThreshold | Sets the threshold (transparency range) for a specified category. |
| GdipSetImageAttributesToIdentity | Sets the color-adjustment matrix of a specified category to identity matrix. |
| GdipSetImageAttributesWrapMode | Sets the wrap mode of the ImageAttributes object. |
Makes a copy of an ImageAttributes object.
FUNCTION GdipCloneImageAttributes (BYVAL imageattr AS CONST GpImageAttributes PTR, _
BYVAL cloneImageattr AS GpImageAttributes PTR PTR) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| cloneImageattr | out] Pointer to a variable that receives a pointer to the new ImageAttributes object. |
' ========================================================================================
' This example loads an image, creates an ImageAttributes object with a wrap mode,
' clones it using GdipCloneImageAttributes, and draws the same image twice using
' the original and cloned attributes.
' ========================================================================================
SUB Example_CloneImageAttributes (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set the wrap mode to WrapModeTile
GdipSetImageAttributesWrapMode(imgAttr, WrapModeTile, ARGB_RED, FALSE)
' // Clone the ImageAttributes
DIM cloneAttr AS GpImageAttributes PTR
hStatus = GdipCloneImageAttributes(imgAttr, @cloneAttr)
' // Draw the image
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _ ' dest rect
0, 0, 2 * nWidth, 2 * nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Draw the image using cloned attributes
hStatus = GdipDrawImageRectRect(graphics, image, _
200, 10, nWidth, nHeight, _ ' dest rect
0, 0, 2 * nWidth, 2 * nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF cloneAttr THEN GdipDisposeImageAttributes(cloneAttr)
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Creates an ImageAttributes object.
FUNCTION GdipCreateImageAttributes (BYVAL imageattr AS GpImageAttributes PTR PTR) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [out] Pointer to a variable that receives a pointer to the new created ImageAttributes object. |
' ========================================================================================
' The following example creates an Image object loading an image from file, creates an
' ImageAttributes object, sets the wrap mode to WrapModeTile and draws the specified
' source rectangle to the destination rectangle, which is four times as large as the
' image itself.
' ========================================================================================
SUB Example_CreateImageAttributes (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set the wrap mode to WrapModeTile
GdipSetImageAttributesWrapMode(imgAttr, WrapModeTile, ARGB_BLUE, FALSE)
' // Draw the image
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _ ' dest rect
0, 0, 2 * nWidth, 2 * nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Disposes the specified ImageAttributes object.
FUNCTION GdipDisposeImageAttributes (BYVAL imageattr AS GpImageAttributes PTR) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object to dispose. |
DIM imgAttr AS GpImageAttributes PTR
DIM hStatus AS LONG
' // Create the ImageAttributes object
hStatus = GdipCreateImageAttributes(@imgAttr)
' // ... apply adjustments, use in rendering ...
' // Dispose when done
IF imgAttr THEN
hStatus = GdipDisposeImageAttributes(imgAttr)
END IF
Adjusts the colors in a palette according to the adjustment settings of a specified category.
FUNCTION GdipGetImageAttributesAdjustedPalette (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL colorPalette AS ColorPalette PTR, BYVAL colorAdjustType AS ColorAdjustType) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| colorPalette | [in, out] Pointer to a ColorPalette structure that on input, contains the palette to be adjusted and, on output, receives the adjusted palette. |
| colorAdjustType | [in] Element of the ColorAdjustType enumeration that specifies the category whose adjustment settings will be applied to the palette. |
An ImageAttributes object maintains color and grayscale settings for five adjustment categories: default, bitmap, brush, pen, and text. For example, you can specify a color-remap table for the default category, a different color-remap table for the bitmap category, and still a different color-remap table for the pen category.
When you call GdipGetImageAttributesAdjustedPalette, you can specify the adjustment category that is used to adjust the palette colors. For example, if you pass ColorAdjustTypeBitmap to the GdipGetImageAttributesAdjustedPalette function, then the adjustment settings of the bitmap category are used to adjust the palette colors.
' ========================================================================================
' The following example initializes a ColorPalette structure with four colors: aqua, black,
' red, and green. The code also creates an ImageAttributes object and sets its bitmap remap
' table so that green will be converted to blue. Then the code adjusts the palette colors by
' passing the address of the palette to the GdipGetAdjustedPalette function. The code displays
' the four palette colors twice: once before the adjustment and once after the adjustment.
' ========================================================================================
SUB GDIP_GetAdjustedPalette (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create a palette that has four entries.
DIM clrPalette AS COLORPALETTE PTR
DIM PALETTE_SIZE AS LONG = 4
clrPalette = Allocate(SIZEOF(COLORPALETTE) + PALETTE_SIZE * SIZEOF(ARGB))
clrPalette->Flags = 0
clrPalette->Count = PALETTE_SIZE
clrPalette->Entries(0) = ARGB_Aqua
clrPalette->Entries(1) = ARGB_Black
clrPalette->Entries(2) = ARGB_Red
clrPalette->Entries(3) = ARGB_Green
' // Create a SolidBrush
DIM brush As GpSolidFill PTR
hStatus = GdipCreateSolidFill(ARGB_Black, @brush)
' // Display the four palette colors with no adjustment.
FOR j AS LONG = 0 TO PALETTE_SIZE - 1
hStatus = GdipSetSolidFillColor(brush, clrPalette->Entries(j))
hStatus = GdipFillRectangle (graphics, brush, 30 * j, 0, 20, 20)
NEXT
' // Create a remap table that converts green to blue.
DIM map AS GpColorMap
map.oldColor = ARGB_Green
map.newColor = ARGB_Violet
' // Create an ImageAttributes object, and set its bitmap remap table.
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
hStatus = GdipSetImageAttributesRemapTable(imgAttr, _
ColorAdjustTypeBitmap, TRUE, 1, @map)
' // Adjust the palette.
hStatus = GdipGetImageAttributesAdjustedPalette(imgAttr, clrPalette, ColorAdjustTypeBitmap)
' // Display the four palette colors after the adjustment.
FOR j AS LONG = 0 TO PALETTE_SIZE - 1
hStatus = GdipSetSolidFillColor(brush, clrPalette->Entries(j))
hStatus = GdipFillRectangle (graphics, brush, 30 * j, 30, 20, 20)
NEXT
' // Cleanup
IF clrPalette THEN Deallocate(clrPalette)
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF brush THEN GdipDeleteBrush(brush)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Adjusts the colors in a palette according to the adjustment settings of a specified category.
FUNCTION GdipResetImageAttributes (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which color adjustment is reset. The default value is ColorAdjustTypeDefault. |
' ========================================================================================
' This example sets a color remap table, draws an adjusted image, resets the attributes,
' and then draws the original image again to show the effect of GdipResetImageAttributes.
' ========================================================================================
SUB Example_ResetImageAttributes (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("RedGreenStripes.bmp", @image)
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get image dimensions
DIM nWidth AS LONG, nHeight AS LONG
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set a remap table: red to blue
DIM cMap AS GpColorMap
cMap.oldColor = ARGB_RED
cMap.newColor = ARGB_BLUE
hStatus = GdipSetImageAttributesRemapTable(imgAttr, ColorAdjustTypeDefault, TRUE, 1, @cMap)
' // Draw the image with color remap applied
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Reset the ImageAttributes for the default category
hStatus = GdipResetImageAttributes(imgAttr, ColorAdjustTypeDefault)
' // Draw the image again with reset attributes (should appear unaltered)
hStatus = GdipDrawImageRectRect(graphics, image, _
120, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets or clears the CachedBackground member of a specified GpImageAttributes object. Microsoft Windows GDI+ does not use the CachedBackground member, so calling this function has no effect. The imageattr parameter specifies the GpImageAttributes object. The enableFlag parameter specifies whether the CachedBackground member is set (TRUE) or cleared (FALSE).
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| enableFlag | [in] Boolean value that specifies whether the CachedBackground member is set (TRUE) or cleared (FALSE). |
Sets the color key (transparency range) for a specified category.
FUNCTION GdipResetImageAttributes (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL colorLow AS ARGB, _
BYVAL colorHigh AS ARGB) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the color key is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate transparency range is enabled for the category specified by the type parameter. |
| colorLow | [in] ARGB color that specifies the low color-key value. |
| colorHigh | [in] ARGB color that specifies the high color-key value. |
' ========================================================================================
' This example sets a color key to make green pixels transparent, then draws the image
' with and without the transparency effect.
' ========================================================================================
SUB Example_SetColorKeys (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("RedGreenStripes.bmp", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set color key: make green transparent
hStatus = GdipSetImageAttributesColorKeys(imgAttr, ColorAdjustTypeDefault, TRUE, GDIP_ARGB(255,0,128,0), GDIP_ARGB(255,0,255,0))
' // Draw original image (no transparency)
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Draw image with transparency applied
hStatus = GdipDrawImageRectRect(graphics, image, _
120, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the color-adjustment matrix for a specified category.
FUNCTION GdipSetImageAttributesColorMatrix (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL colorMatrix AS ColorMatrix PTR, _
BYVAL grayMatrix AS ColorMatrix PTR, BYVAL flags AS ColorMatrixFlags) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the color-adjustment matrix is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate color adjustment is enabled for the category specified by the type parameter. |
| colorMatrix | [in] Pointer to a 5x5 color-adjustment matrix. |
| grayMatrix | [in] Specifies a matrix to be used for adjusting gray shades when the value of the flags parameter is ColorMatrixFlagsAltGray. |
| flags | [in] Element of the ColorMatrixFlags enumeration that specifies the type of image and color that will be affected by the color-adjustment matrix. |
' ========================================================================================
' This example applies a grayscale color matrix to an image using GdipSetImageAttributesColorMatrix.
' ========================================================================================
SUB Example_SetColorMatrix (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Define grayscale color matrix
DIM grayMatrix AS ColorMatrix
grayMatrix.m(0, 0) = 0.3 : grayMatrix.m(0, 1) = 0.3 : grayMatrix.m(0, 2) = 0.3 : grayMatrix.m(0, 3) = 0 : grayMatrix.m(0, 4) = 0
grayMatrix.m(1, 0) = 0.59: grayMatrix.m(1, 1) = 0.59: grayMatrix.m(1, 2) = 0.59: grayMatrix.m(1, 3) = 0 : grayMatrix.m(1, 4) = 0
grayMatrix.m(2, 0) = 0.11: grayMatrix.m(2, 1) = 0.11: grayMatrix.m(2, 2) = 0.11: grayMatrix.m(2, 3) = 0 : grayMatrix.m(2, 4) = 0
grayMatrix.m(3, 0) = 0 : grayMatrix.m(3, 1) = 0 : grayMatrix.m(3, 2) = 0 : grayMatrix.m(3, 3) = 1 : grayMatrix.m(3, 4) = 0
grayMatrix.m(4, 0) = 0 : grayMatrix.m(4, 1) = 0 : grayMatrix.m(4, 2) = 0 : grayMatrix.m(4, 3) = 0 : grayMatrix.m(4, 4) = 1
' // Apply the color matrix
hStatus = GdipSetImageAttributesColorMatrix(imgAttr, ColorAdjustTypeDefault, TRUE, @grayMatrix, NULL, ColorMatrixFlagsDefault)
' // Draw original image
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Draw grayscale image
hStatus = GdipDrawImageRectRect(graphics, image, _
200, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the gamma value for a specified category.
FUNCTION GdipSetImageAttributesGamma (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL gamma AS REAL) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the gamma value is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate gamma is enabled for the category specified by the type parameter. |
| gamma | [in] Single precision value number that specifies the gamma value. |
' ========================================================================================
' This example applies gamma correction to an image using GdipSetImageAttributesGamma.
' ========================================================================================
SUB Example_SetGamma (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Apply gamma correction (e.g., 2.2)
hStatus = GdipSetImageAttributesGamma(imgAttr, ColorAdjustTypeDefault, TRUE, 2.2)
' // Draw original image
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Draw gamma-adjusted image
hStatus = GdipDrawImageRectRect(graphics, image, _
200, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Unsupported. This function sets an internal state variable to the value specified by the on parameter.
FUNCTION GdipSetImageAttributesICMMode (BYVAL imageattr AS GpImageAttributes PTR, BYVAL on AS BOOL) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| on | [in] If this value is true, Image Color Management (ICM) is used for all color adjustment. If the value is false, ICM is not used. |
Turns off color adjustment for a specified category.
FUNCTION GdipSetImageAttributesNoOp (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which color correction is turned off. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a color adjustment is enabled for the category specified by the type parameter. |
' ========================================================================================
' This example applies a grayscale matrix, then disables it using GdipSetImageAttributesNoOp.
' ========================================================================================
SUB Example_SetNoOp (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' Load image
DIM image AS GpImage PTR
GdipLoadImageFromFile("climber.jpg", @image)
' Get image dimensions
DIM nWidth AS UINT
DIM nHeight AS UINT
GdipGetImageWidth(image, @nWidth)
GdipGetImageHeight(image, @nHeight)
' Create ImageAttributes
DIM imgAttr AS GpImageAttributes PTR
GdipCreateImageAttributes(@imgAttr)
' Define grayscale matrix
DIM grayMatrix AS ColorMatrix
grayMatrix.m(0,0) = 0.3 : grayMatrix.m(0,1) = 0.3 : grayMatrix.m(0,2) = 0.3
grayMatrix.m(1,0) = 0.59: grayMatrix.m(1,1) = 0.59: grayMatrix.m(1,2) = 0.59
grayMatrix.m(2,0) = 0.11: grayMatrix.m(2,1) = 0.11: grayMatrix.m(2,2) = 0.11
grayMatrix.m(3,3) = 1
grayMatrix.m(4,4) = 1
' Apply grayscale matrix
GdipSetImageAttributesColorMatrix(imgAttr, ColorAdjustTypeBitmap, TRUE, @grayMatrix, NULL, ColorMatrixFlagsDefault)
' Draw grayscale image
GdipDrawImageRectRect(graphics, image, 10, 10, nWidth, nHeight, 0, 0, nWidth, nHeight, UnitPixel, imgAttr, NULL, NULL)
' Disable color adjustments using GdipSetImageAttributesNoOp
GdipSetImageAttributesNoOp(imgAttr, ColorAdjustTypeBitmap, TRUE)
' Draw original image (no color matrix applied)
GdipDrawImageRectRect(graphics, image, 210, 10, nWidth, nHeight, 0, 0, nWidth, nHeight, UnitPixel, imgAttr, NULL, NULL)
' Cleanup
GdipDisposeImage(image)
GdipDeleteGraphics(graphics)
GdipDisposeImageAttributes(imgAttr)
END SUB
' ========================================================================================
Sets the CMYK output channel for a specified category.
FUNCTION GdipSetImageAttributesOutputChannel (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL channelFlags AS ColorChannelFlags) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the output channel is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate output channel is enabled for the category specified by the type parameter. |
| channelFlags | [in] Element of the ColorChannelFlags enumeration that specifies the output channel. |
' ========================================================================================
' The following example creates an Image object and calls the GdipDrawImageRect function
' to draw the image. Then the code creates an ImageAttributes object and sets its bitmap
' output channel to cyan (ColorChannelFlagsC). The code calls GdipDrawImageRect a second
' time, passing the address of the Image object and the address of the ImageAttributes object.
' The cyan channel of each pixel is calculated, and the rendered image shows the intensities
' of the cyan channel as shades of gray. The code calls GdipDrawImageRect three more times
' to show the intensities of the magenta, yellow, and black channels.
' ========================================================================================
SUB Example_SetOutputChannel (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("Mosaic2.bmp", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Draw the image unaltered.
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Draw the image, showing the intensity of the cyan channel.
hStatus = GdipSetImageAttributesOutputChannel(imgAttr, ColorAdjustTypeBitmap, TRUE, ColorChannelFlagsC)
hStatus = GdipDrawImageRectRect(graphics, image, _
110, 10, nWidth, nHeight, _ ' dest rect
0, 0, nWidth, nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Draw the image, showing the intensity of the magenta channel.
hStatus = GdipSetImageAttributesOutputChannel(imgAttr, ColorAdjustTypeBitmap, TRUE, ColorChannelFlagsM)
hStatus = GdipDrawImageRectRect(graphics, image, _
210, 10, nWidth, nHeight, _ ' dest rect
0, 0, nWidth, nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Draw the image, showing the intensity of the yellow channel.
hStatus = GdipSetImageAttributesOutputChannel(imgAttr, ColorAdjustTypeBitmap, TRUE, ColorChannelFlagsY)
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 110, nWidth, nHeight, _ ' dest rect
0, 0, nWidth, nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Draw the image, showing the intensity of the black channel.
hStatus = GdipSetImageAttributesOutputChannel(imgAttr, ColorAdjustTypeBitmap, TRUE, ColorChannelFlagsK)
hStatus = GdipDrawImageRectRect(graphics, image, _
110, 110, nWidth, nHeight, _ ' dest rect
0, 0, nWidth, nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the output channel color-profile file for a specified category.
FUNCTION GdipSetImageAttributesOutputChannelColorProfile (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL colorProfileFilename AS CONST WSTRING PTR) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the output channel color-profile file is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate output channel color profile is enabled for the category specified by the type parameter. |
| colorProfileName | [in] Path name of a color-profile file. If the color-profile file is in the %SystemRoot%directory, then this parameter can be the file name. Otherwise, this parameter must be the fully-qualified path name. |
' ========================================================================================
' This example sets a CMYK output channel color profile using GdipSetImageAttributesOutputChannelColorProfile.
' ========================================================================================
SUB Example_SetOutputChannelColorProfile (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Draw the image unaltered.
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set CMYK color profile (must be a valid ICC file path)
DIM colorProfileFilename AS WSTRING *MAX_PATH = "C:\Program Files\Bullzip\PDF Printer\icc\sRGB_IEC61966-2-1_no_black_scaling.icc"
hStatus = GdipSetImageAttributesOutputChannelColorProfile(imgAttr, _
ColorAdjustTypeDefault, TRUE, colorProfileFilename)
' // Draw image with color profile applied
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the color-remap table for a specified category.
FUNCTION GdipSetImageAttributesRemapTable (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL mapSize AS UINT, _
BYVAL map AS GpColorMap) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the color-remap table is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate color remap table is enabled for the category specified by the type parameter. |
| mapSize | [in] Long integer value that specifies the number of elements in the map array. |
| map | [in] Pointer to an array of GpColorMap structures that defines the color map. |
' ========================================================================================
' The following example creates an Image object based on a .bmp file and then draws the image.
' The code creates an ImageAttributes object and sets its default remap table so that red
' is converted to blue. Then the code draws the image again using the color adjustment
' specified by the remap table.
' ========================================================================================
SUB Example_SetRemapTable (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create an Image object based on a .bmp file.
' // The image has one red stripe and one green stripe.
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("RedGreenStripes.bmp", @image)
' // Create an ImageAttributes object and set its remap table.
DIM cMap AS GpColorMap
cMap.oldColor = ARGB_RED
cMap.newColor = ARGB_BLUE
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
hStatus = GdipSetImageAttributesRemapTable(imgAttr, ColorAdjustTypeDefault, TRUE, 1, @cMap)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Draw the image with no color adjustment
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Draw the image with red converted to blue.
hStatus = GdipDrawImageRectRect(graphics, image, _
100, 10, nWidth, nHeight, _ ' // dest rect
0, 0, nWidth, nHeight, _ ' // source rect
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the threshold (transparency range) for a specified category.
FUNCTION GdipSetImageAttributesThreshold (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType, BYVAL enableFlag AS BOOL, BYVAL threshold AS REAL) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the color threshold is set. The default value is ColorAdjustTypeDefault. |
| enableFlag | [in] Boolean value that specifies whether a separate threshold is enabled for the category specified by the type parameter. |
| threshold | [in] Single precision value number that specifies the threshold value. |
' ========================================================================================
' The following example creates an Image object based on a .bmp file. The code also creates
' an ImageAttributes object and sets its bitmap threshold value to 0.6. Then the code draws
' the image twice: once with no color adjustment and once with the adjustment specified by
' the threshold.
' ========================================================================================
SUB Example_SetThreshold (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Create an Image object based on a .bmp file.
' // The image has one stripe with RGB components (160, 0, 0)
' // and one stripe with RGB components (0, 140, 0).
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("RedGreenThreshold.bmp", @image)
' // Create an ImageAttributes object, and set its bitmap threshold to 0.6.
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
hStatus = GdipSetImageAttributesThreshold(imgAttr, ColorAdjustTypeBitmap, TRUE, 0.6)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Draw the image with no color adjustment.
hStatus = GdipDrawImageRect(graphics, image, 10, 10, nWidth, nHeight)
' // Draw the image with the threshold applied.
' // 160 > 0.6*255, so the red stripe will be changed to full intensity.
' // 140 < 0.6*255, so the green stripe will be changed to zero intensity.
hStatus = GdipDrawImageRectRect(graphics, image, _
100, 10, nWidth, nHeight, _ ' dest rect
0, 0, nWidth, nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the color-adjustment matrix of a specified category to identity matrix.
FUNCTION GdipSetImageAttributesToIdentity (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL type AS ColorAdjustType) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| type | [in] Element of the ColorAdjustType enumeration that specifies the category for which the color-adjustment matrix is set to identity. The default value is ColorAdjustTypeDefault. |
' ========================================================================================
' This example applies a grayscale matrix, then resets it using GdipSetImageAttributesToIdentity.
' ========================================================================================
SUB Example_SetToIdentity (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Define grayscale matrix
DIM grayMatrix AS ColorMatrix
grayMatrix.m(0, 0) = 0.3 : grayMatrix.m(0, 1) = 0.3 : grayMatrix.m(0, 2) = 0.3 : grayMatrix.m(0, 3) = 0 : grayMatrix.m(0, 4) = 0
grayMatrix.m(1, 0) = 0.59: grayMatrix.m(1, 1) = 0.59: grayMatrix.m(1, 2) = 0.59: grayMatrix.m(1, 3) = 0 : grayMatrix.m(1, 4) = 0
grayMatrix.m(2, 0) = 0.11: grayMatrix.m(2, 1) = 0.11: grayMatrix.m(2, 2) = 0.11: grayMatrix.m(2, 3) = 0 : grayMatrix.m(2, 4) = 0
grayMatrix.m(3, 0) = 0 : grayMatrix.m(3, 1) = 0 : grayMatrix.m(3, 2) = 0 : grayMatrix.m(3, 3) = 1 : grayMatrix.m(3, 4) = 0
grayMatrix.m(4, 0) = 0 : grayMatrix.m(4, 1) = 0 : grayMatrix.m(4, 2) = 0 : grayMatrix.m(4, 3) = 0 : grayMatrix.m(4, 4) = 1
' // Apply grayscale matrix
hStatus = GdipSetImageAttributesColorMatrix(imgAttr, ColorAdjustTypeDefault, TRUE, @grayMatrix, NULL, ColorMatrixFlagsDefault)
' // Draw grayscale image
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Reset to identity matrix (remove grayscale)
hStatus = GdipSetImageAttributesToIdentity(imgAttr, ColorAdjustTypeDefault)
' // Draw original image (no color adjustment)
hStatus = GdipDrawImageRectRect(graphics, image, _
200, 10, nWidth, nHeight, _
0, 0, nWidth, nHeight, _
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================
Sets the wrap mode of the ImageAttributes object.
FUNCTION GdipSetImageAttributesWrapMode (BYVAL imageattr AS GpImageAttributes PTR, _
BYVAL wrap AS WrapMode, BYVAL argb AS ARGB, BYVAL clamp AS BOOL) AS GpStatus
| Parameter | Description |
|---|---|
| imageattr | [in] Pointer to the ImageAttributes object. |
| wrap | [in] Element of the WrapMode enumeration that specifies how repeated copies of an image are used to tile an area. |
| argb | [in] ARGB color that specifies the color of pixels outside of a rendered image. This color is visible if the wrap parameter is set to WrapModeClamp and the source rectangle passed to GdipDrawImage is larger than the image itself. |
' ========================================================================================
' The following example calls DrawImage twice. In both calls, the specified source rectangle
' is four times as large as the image itself. In the first call to DrawImage, the
' ImageAttributes object has its wrap mode set to WrapModeClamp, so the portion of the
' source rectangle outside the image is filled with red according to the second argument
' passed to ImageAttributes.SetWrapMode. In the second call to DrawImage, the ImageAttributes
' object has its wrap mode set to WrapModeTile, so the portion of the source rectangle
' outside the image is filled with repeated copies of the image.
' ========================================================================================
SUB Example_SetWrapMode (BYVAL hdc AS HDC)
DIM hStatus AS LONG
' // Create a graphics object from the device context
DIM graphics AS GpGraphics PTR
hStatus = GdipCreateFromHDC(hdc, @graphics)
' // Get the DPI scaling ratios
DIM dpiX AS SINGLE
hStatus = GdipGetDpiX(graphics, @dpiX)
DIM rxRatio AS SINGLE = dpiX / 96
DIM dpiY AS SINGLE
hStatus = GdipGetDpiY(graphics, @dpiY)
Dim ryRatio AS SINGLE = dpiY / 96
' // Set the scale transform
hStatus = GdipScaleWorldTransform(graphics, rxRatio, ryRatio, MatrixOrderPrepend)
' // Load an image from file
DIM image AS GpImage PTR
hStatus = GdipLoadImageFromFile("climber.jpg", @image)
' // Set the resolution of this image object to the user's DPI settings
hStatus = GdipBitmapSetResolution(image, dpiX, dpiY)
' // Get the width and height of the image
DIM AS LONG nWidth, nHeight
hStatus = GdipGetImageWidth(image, @nWidth)
hStatus = GdipGetImageHeight(image, @nHeight)
' // Create an ImageAttributes object
DIM imgAttr AS GpImageAttributes PTR
hStatus = GdipCreateImageAttributes(@imgAttr)
' // Set the wrap mode to WrapModeClamp (no tile)
GdipSetImageAttributesWrapMode(imgAttr, WrapModeClamp, ARGB_RED, FALSE)
' // Draw the image
hStatus = GdipDrawImageRectRect(graphics, image, _
10, 10, nWidth, nHeight, _ ' dest rect
0, 0, 2 * nWidth, 2 * nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Change the wrap mode to WrapModeTile
GdipSetImageAttributesWrapMode(imgAttr, WrapModeTile, ARGB_RED, FALSE)
' // Draw the image with the new attribute
hStatus = GdipDrawImageRectRect(graphics, image, _
200, 10, nWidth, nHeight, _ ' dest rect
0, 0, 2 * nWidth, 2 * nHeight, _ ' source dest
UnitPixel, imgAttr, NULL, NULL)
' // Cleanup
IF imgAttr THEN GdipDisposeImageAttributes(imgAttr)
IF image THEN GdipDisposeImage(image)
IF graphics THEN GdipDeleteGraphics(graphics)
END SUB
' ========================================================================================